/*{
"CATEGORIES": [
"Dissolve"
],
"CREDIT": "Automatically converted from https://www.github.com/gl-transitions/gl-transitions/tree/master/LinearBlur.glsl",
"DESCRIPTION": "",
"INPUTS": [
{
"NAME": "startImage",
"TYPE": "image"
},
{
"NAME": "endImage",
"TYPE": "image"
},
{
"DEFAULT": 0,
"MAX": 1,
"MIN": 0,
"NAME": "progress",
"TYPE": "float"
},
{
"DEFAULT": 0.1,
"MAX": 1,
"MIN": 0,
"NAME": "intensity",
"TYPE": "float"
}
],
"ISFVSN": "2"
}
*/
vec4 getFromColor(vec2 inUV) {
return IMG_NORM_PIXEL(startImage, inUV);
}
vec4 getToColor(vec2 inUV) {
return IMG_NORM_PIXEL(endImage, inUV);
}
// author: gre
// license: MIT
const int passes = 6;
vec4 transition(vec2 uv) {
vec4 c1 = vec4(0.0);
vec4 c2 = vec4(0.0);
float disp = intensity*(0.5-distance(0.5, progress));
for (int xi=0; xi<passes; xi++)
{
float x = float(xi) / float(passes) - 0.5;
for (int yi=0; yi<passes; yi++)
{
float y = float(yi) / float(passes) - 0.5;
vec2 v = vec2(x,y);
float d = disp;
c1 += getFromColor( uv + d*v);
c2 += getToColor( uv + d*v);
}
}
c1 /= float(passes*passes);
c2 /= float(passes*passes);
return mix(c1, c2, progress);
}
void main() {
gl_FragColor = transition(isf_FragNormCoord.xy);
}